Many devices including computers have processors that can run at different frequencies. Modern processors have one or more processor cores comprised of transistors which generally require higher voltage to switch states faster when operated at an increased frequency. Running a processor (or processor core) at different frequencies and corresponding voltages over time is referred to as dynamic voltage and frequency scaling (DVFS). For example, a processor core may operate at 500 MHz at 1.2 volts, 250 MHz at 1.1 volts, and 125 MHz at 1.0 volts.
A processor device typically uses less energy when run at a lower frequency because of the decrease in the voltage level required for operation of the processor core. Furthermore, operating at lower frequency may increase the overall power efficiency relative to processing performance since the dynamic power is derived as the square of the voltage level but the increase in processing time due to the lowered frequency only increases linearly.
Modern processor devices include an operating system or BiOS with a frequency governor functionality. Typically, the frequency governor regulates the processor core operation by analyzing how much idle time is available to the processor device. When a processor device is idle it does not do any meaningful task. More particularly, when a processor core is idle, the core does not perform any useful computation. The frequency governor then utilizes a policy to decide what frequency is suitable to operate a processor core at to fulfill the current processing requirements of currently executed software.
The frequency governor generally implements the policy at the processor system level. It is possible to effect the policy by setting parameters such as, for example, the margin of idle time desired. For example, if the desired margin of idle time is 20%, the frequency governor will cause the one or more processor cores to step up the frequency of operation if less than 20% of currently available core cycles of idle time is available at the current frequency. The frequency governor will thus choose a higher core frequency which can maintain the load and margin. Also it is possible for the frequency governor to switch the processor cores between operation states that prioritize computational performance (for example, by running the cores at maximum core frequency independent of load) or energy conservation (for example, by running the cores at minimum core frequency independent of load) or a combination of both.
Modern computing systems and the processor devices they contain generally run many different types of software. Thus, different tasks from different types of software having, in some examples, strongly differing processing requirements are run on processor cores simultaneously. Typically, all executing tasks from the various types of software are all constrained to adhere to the same and relatively fixed frequency settings set by the frequency governor. This prevents, for example, prioritizing performance for interactive applications which may require a large amount of core performance, and thus computational power, to be readily available while prioritizing conserving power during the performance of background services, which may require less or a known relatively constant core performance to be available.
United States Patent Application Publication US 2009/0217277 discloses assigning similar threads to each processing unit, so that threads having similar characteristics are executed by a processing unit. The Linux Kernel Documentation by Paul Menage discusses the Linux Control Group, or cgroup, mechanism. In Re: Revert for cgroups CPU accounting subsystem patch, Paul Menage discusses monitoring resource usage statistics for groups.